package jm.nj.demo06main.demo02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;

/*
* java.text.DateFormat:时间/日期格式化的类
* DateFormat是一个抽象类,无法创建对象
*
* 作用:
*   日期/时间格式化子类(如 simpleDateFormat)允许进行格式化(也就是日期 -> 文本)解析（文本-> 日期）和标准化。
*
* 成员方法:
* String format(Date date)将一个Date把日期按照方法给定的模式格式化为字符串
* Date parse(String source)  把符合构造方法中模式的字符串解析为日期
*
* java.text.SimpleDateFommat类 继承DateFormat
* SimpleDateFormat 是一个以语言环境有关的方式来格式化和解析日期的具体类
*
* 构造方法:
* SimpleDateFormat(String patten)  用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat
*
* 格式化时间日期的模式:
 * 	当出现y时，会将y替换成年
 * 	当出现M时，会将M替换成月
 * 	当出现d时，会将d替换成日
 * 	当出现H时，会将H替换成时
 * 	当出现m时，会将m替换成分
 * 	当出现s时，会将s替换成秒
* */
public class Demo01DateFormat {
    public static void main(String[] args) throws ParseException {
        method_01();
        method_02();
    }
/*
* Date parse(String source)  把符合构造方法中模式的字符串解析为日期
* 使用步骤:
* 1.创建SimpleDateFormat对象,构造方法中模式的字符串解析为日期
* 2.调用SimpleDateFormat对象中的parse方法,把方法中传递的字符串,按照构造方法中给定模式解析为Date日期
* 注意:parse方法中的字符串模式必须和构造方法中的模式一模一样,否则会抛出异常
* */
    private static void method_02() throws ParseException {
        //创建
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用
        Date date =sdf.parse("2020-08-09 13:45:45");
        System.out.println(date);
    }

    /*
* String format(Date date) 把日期按照构造方法中给定的模式格式化为字符串
*
* 使用步骤:
*       1.创建SimpleDateFormat对象,构造方法的参数传递指定的模式
*        2.调用SimpleDateFormat对象的format方法,把日期转换为符合构造方法模式的字符串
* 模式:
*   yyyy-MM-dd HH:mm:ss
* yyyy年MM月dd日 HH时mm分ss秒
* 注意:字符串中的模式不能改变,模式的连接符号可以变换
* */
    private static void method_01() {
        //1.创建SimpleDateFormat对象,构造方法的参数传递指定模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        //2.调用SimpleDateFormat对象中的format方法,把日期转换为符合构造方法模式的字符串
        Date date = new Date();
        String dateString = sdf.format(date);
        System.out.println(date);
        System.out.println(dateString);
    }
}
